package comi.gsi.config;

import java.io.File;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class CoreXMLManager {

	public static final String XMLCOREPATH = "configcore.xml";
	private Document doc;

	private CoreXMLManager(String path) {
		try {
			doc = UtilXml.createDocument(new File(path));
		} catch (final Exception e) {
			e.printStackTrace();
		}
	}

	private static CoreXMLManager singleton;

	public static CoreXMLManager getSingleton(String path_dir) {
		if (singleton == null) {
			synchronized (CoreXMLManager.class) {
				if (singleton == null) {
					singleton = new CoreXMLManager(path_dir + XMLCOREPATH);
				}
			} // if
		} // if
		return singleton;
	}

	public String getLanguage() {
		final Node nodo = UtilXml.getNodo("lang", doc);
		final Element elemento = UtilXml.getElement(nodo);
		if (elemento != null) {
			return elemento.getAttribute("locale");
		}
		return null;
	}
	
	public String[] getUtenteDefault() {
		String[] utente = new String[2];
		final Node nodo = UtilXml.getNodo("utentedefault", doc);
		final Element elemento = UtilXml.getElement(nodo);
		if (elemento != null) {
			utente[0] = elemento.getAttribute("user");
			utente[1] = elemento.getAttribute("pass");
		}
		return utente;
	}
	
	public void setUtenteDefault(String user, String pass, String path_dir) {
		Node nodoUtenteDefault = UtilXml.getNodo("utentedefault", getDoc());
		Element elementoUtenteDefault = UtilXml.getElement(nodoUtenteDefault);
		if (elementoUtenteDefault != null) {
			elementoUtenteDefault.setAttribute("user", user);
			elementoUtenteDefault.setAttribute("pass", pass);
			UtilXml.writeXmlFile2(getDoc(), path_dir + XMLCOREPATH);
		}
	}

	public String getXMLStyleFilePath() {
		final Node nodo = UtilXml.getNodo("style", doc);
		final NodeList listaFigli = nodo.getChildNodes();
		for (int i = 0; i < listaFigli.getLength(); i++) {
			final Node nodoFiglio = listaFigli.item(i);
			if (nodoFiglio.getNodeName().equals("file")) {
				final Element elemento = UtilXml.getElement(nodoFiglio);
				if (elemento != null) {
					return elemento.getAttribute("url");
				}
			}
		}
		return null;
	}

	public String getFileMessaggiName() {
		final Node nodo = UtilXml.getNodo("messaggi", doc);
		final NodeList listaFigli = nodo.getChildNodes();
		for (int i = 0; i < listaFigli.getLength(); i++) {
			final Node nodoFiglio = listaFigli.item(i);
			if (nodoFiglio.getNodeName().equals("file")) {
				final Element elemento = UtilXml.getElement(nodoFiglio);
				if (elemento != null) {
					return elemento.getAttribute("nome");
				}
			}
		}
		return null;
	}

	public Document getDoc() {
		return doc;
	}

	public void setDoc(Document doc) {
		this.doc = doc;
	}
}
